//http://blog.csdn.net/lee1054908698/article/details/54633056
//还有一些其他的知识点,多线程不是主要的.

#include <iostream>
// 必须的头文件是
#include <cstdlib>
#include <pthread.h>
using namespace std;
#define NUM_THREADS 5

struct thread_data{
int id;
char *mes;
};

// 线程的运行函数,函数返回的是函数指针，便于后面作为参数  
void* say_hello(void* tid)
{
struct thread_data *my_data;
my_data=(struct thread_data *) tid;
	int id = *((int *)tid);
    cout << "Hello Runoob！"<<  my_data->id <<","<<  my_data->mes<< endl;
pthread_exit(NULL);
}
int main()
{
    // 定义线程的 id 变量，多个变量使用数组
    pthread_t tids[NUM_THREADS];
	struct thread_data index[NUM_THREADS];
    for(int i = 0; i < NUM_THREADS; ++i)
    {

      	cout << "main() : 创建线程, " << i << endl;
		index[i].id=i;
		index[i].mes="it's message";
        //参数依次是：创建的线程id，线程参数，调用的函数，传入的函数参数
        int ret = pthread_create(&tids[i], NULL, say_hello, (void *)&(index[i]) );
        if (ret != 0)
        {
           cout << "pthread_create error: error_code=" << ret << endl;
        }
    }
    //等各个线程退出后，进程才结束，否则进程强制结束了，线程可能还没反应过来；
    pthread_exit(NULL);
}
